package jmine.tec.di.injector;

import jmine.tec.di.metadata.DependencyMetaData;
import jmine.tec.di.scope.TypedScope;
import jmine.tec.di.type.TypeConvertionException;

/**
 * Instancias dessa classe injetam dependencias em outros objetos
 * 
 * @author MarceloT
 */
public interface Injector {

    /**
     * Injeta uma dependencia no target
     * 
     * @param target o alvo
     * @param properties de onde resolver objetos
     * @throws TypeConvertionException e
     */
    void doInject(Object target, TypedScope properties) throws TypeConvertionException;

    /**
     * @return {@link DependencyMetaData}
     */
    DependencyMetaData getDependencyMetaData();

}
